package com.example.train_operate.service;

import com.example.train_operate.ws.model.OnlineUser;
import org.springframework.web.socket.WebSocketSession;

import java.util.List;
import java.util.Optional;

/**
 * @author 21609
 */
public interface OnlineUserService {

    void userOnline(String userId, String userName, String displayName,
                    String deviceType, WebSocketSession session);

    void userOffline(String sessionId);

    Optional<OnlineUser> getBySessionId(String sessionId);

    Optional<OnlineUser> getByUserId(String userId);

    List<OnlineUser> getAllOnlineUsers();

    List<OnlineUser> getOnlineUserByDeviceType(String deviceType);

    void updateLastActive(String sessionId);

    void setCallStatus(String userId, String status);

    String getCallStatus(String userId);

    boolean isUserOnline(String userId);

    int getOnlineUserCount();

    void cleanInactiveUsers(long maxInactiveSeconds);
}
